package pl.edu.amu.wmi.kino.visualjavafx.model.animation.transformations;

import java.beans.PropertyChangeListener;
import pl.edu.amu.wmi.kino.visualjavafx.model.animation.interpolators.Interpolation;
import pl.edu.amu.wmi.kino.visualjavafx.model.objects.VisualObject;

// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.CA66219B-40B3-3FF0-51D3-E7DA61B189E6]
// </editor-fold> 
public interface Transformation {

    // Code block for changeListeners support start
    public void addPropertyChangeListener(PropertyChangeListener listener);
    public void removePropertyChangeListener(PropertyChangeListener listener);
    // Code block for changeListeners support end

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.3A8DDEA0-1380-2F57-1DFF-B6C5DF17F7E6]
    // </editor-fold>
    /**
     * this method is for laziness.
     * @return the first interpolation (getInterpolation[0]())
     */
    public Interpolation getInterpolation ();

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.FE3552FC-7924-EE64-0329-04BDD670195D]
    // </editor-fold> 
    public void setInterpolation (Interpolation i);

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.148C9F6C-928F-AC0F-EE15-39BBBB73BE2F]
    // </editor-fold> 
    public VisualObject transform (double howMuch, VisualObject transformable,VisualObject orginalTransformedObject);

    public Interpolation[] getInterpolations();

}

